//对于axios进行二次封装
import axios from 'axios';
import nprogress from 'nprogress';
import 'nprogress/nprogress.css'

//在这里引入store
import store from '@/store';

//1.利用axios对象的方法create，去创建create，去创建一个axios实例
//2.request就是axios，只不过稍微配置一下
const requests=axios.create({
  //配置对象
  //基础路径，发请求的时候，路径当中会出现api
  baseURL:'/api',
  
  //代表请求超时的时间5s
  timeout:5000,
})
nprogress.start()

//请求拦截器：在发请求之前，请求拦截器可以检测到，可以在请求出去之前做一些事
requests.interceptors.request.use((config)=>{

  //游客身份验证
   if(store.state.detail.uuid_token){
    
     config.headers.userTempId=store.state.detail.uuid_token
   }

   //用户身份验证
   if(store.state.user.token){
    config.headers.token=store.state.user.token
   }

  //config:配置对象，对象里面有一个属性很重要， headers请求头
  return config;
})

//响应拦截器
nprogress.done()
requests.interceptors.response.use((res)=>{
  //成功的回调函数：嗠器相应数据回来以后，响应拦截器可以检测到，可以做一些事情
  return res.data;
},(err)=>{
  //响应失败的回调函数
  return Promise.reject(new onErrorCaptured('false'))
})

export default requests